#define  _CRT_SECURE_NO_WARNINGS
//#include <stdio.h>
//#include <assert.h>
//size_t my_strlen1(const char* p)
//{
//	assert(p);
//	size_t count = 0;
//	while (*p)
//	{
//		p++;
//		count++;
//	}
//	return count;
//}
//size_t my_strlen2(const char* p)
//{
//	assert(p);
//	char* start = p;
//	while (*p)p++;
//	return p - start;
//}
//size_t my_strlen3(const char* p)
//{
//	assert(p);
//	if (*p == '\0')return 0;
//	else return 1 + my_strlen3(p + 1);
//}
//int main()
//{
//	char ch[20] = "abcdefg";
//	size_t len1 = my_strlen1(ch);
//	size_t len2 = my_strlen2(ch);
//	size_t len3 = my_strlen3(ch);
//	printf("%zd\n%zd\n%zd\n", len1, len2, len3);
//	return 0;
//}



//#include <stdio.h>
//#include <assert.h>
//char* my_strcpy(char* dst, const char* src)
//{
//	assert(dst && src);
//	char* start = dst;
//	while (*dst++ = *src++);
//	return start;
//}
//int main()
//{
//	char ch1[20] = "Hello World!";
//	char ch2[20] = { 0 };
//	char* p = my_strcpy(ch2, ch1);
//	printf(p);
//	return 0;
//}


#include <stdio.h>
#include <assert.h>
char* my_strcat(char* dst, const char* src)
{
	assert(dst && src);
	char* start = dst;
	while (*dst)dst++;
	while (*dst++ = *src++);
	return start;
}
int main()
{
	char ch1[20] = "Hello ";
	char ch2[20] = "World!";
	char* p = my_strcat(ch1, ch2);
	printf(p);
	return 0;
}
